package edu.bw.mapper;

import edu.bw.po.Product;
import edu.bw.vo.QueryVO;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

public interface ProductMapper {

    /**
     * 根据商品编号查询商品
     * @param pid 商品编号
     * @return 查询到的商品信息
     */
    Product selectByPid(int pid);


    /**
     * 按照商品种类进行查询
     * @param category 种类名称
     * @return 该种类下的商品集合
     */
    List<Product> selectByCategory(String category);

    /**
     * 根据条件(商品的价格和种类去查询)
     *
     * @param queryVO
     * @return 查询到的商品集合
     */
    List<Product> selectByCondition(QueryVO queryVO);


    /**
     * 根据条件(商品的价格和种类去查询)
     * @param map 把多个参数封装到HashMap中进行传递
     * @return 查询到的商品集合
     */
    List<Product> selectByMap(HashMap<String, Object> map);


    /**
     * 根据价格和种类去查询商品
     * @param price 价格
     * @param category 种类
     * @return 查询到商品集合
     */
    List<Product> selectByParams(@Param("productPrice") double price,
                                 @Param("productCategory") String category);


    /**
     * 根据价格和种类去查询商品
     * @param map 把多个参数封装到HashMap中进行传递
     * @return 查询到商品集合
     */
    List<Product> selectByMapParams(@Param("condition") HashMap<String, Object> map);


    /**
     * 查询商品的总条数
     * @return 总条数
     */
    int selectByCount();


    /**
     * 根据种类去查询(列名和字段做映射)
     * @param category
     * @return 查询到的商品集合
     */
    List<Product> selectByResultMap(String category);

}
